# 编译器与参数
CC      ?= gcc
CFLAGS  += -Wall -Wextra -O2 -g -MMD -MP        # -MMD -MP 生成头文件依赖
LDLIBS  += -pthread                              # 链接 pthread；若需要也可把 -pthread 放到 CFLAGS
# 源与目标
SRCS := $(wildcard *.c)
OBJS := $(SRCS:.c=.o)
DEPS := $(OBJS:.o=.d)

# 默认目标
all: main

# 链接
main: $(OBJS)
	$(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS)

# 编译（单个 .c -> .o）
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

# 清理与重建
.PHONY: clean rebuild
clean:
	$(RM) $(OBJS) $(DEPS) main

rebuild: clean all

# 自动包含头文件依赖
-include $(DEPS)

